package com.orangelife.service.propFeeOffsetInfo;

import java.util.List;
import java.util.Map;

import com.orangelife.exception.AppBizException;
import com.orangelife.service.propFeeOffsetInfo.model.PropFeeOffsetInfoDto;

/*****************************************************************
 * Copyright(C) ORANGELIFE Corporation 2015. All Rights Reserved.
 *****************************************************************/
/*
 * ============================================================== 功能名
 * PropFeeOffsetInfo类的 service层的增删改查
 * 
 * @author @author
 * 
 * @version 1.1.0
 * 
 * @date 2016-11-24 14:18:55
 * ==============================================================
 */
public interface IPropFeeOffsetInfoService {

	/**
	 * 用途 添加propFeeOffsetInfo（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:18:55
	 * @param propFeeOffsetInfo
	 * @return
	 * @throws AppBizException
	 */
	public int addPropFeeOffsetInfo(PropFeeOffsetInfoDto propFeeOffsetInfo)
			throws AppBizException;

	// /**
	// * 根据细项ID批量生成冲抵信息
	// *
	// * @author
	// * @date创建时间 2016-11-24 14:18:55
	// * @param propFeeOffsetInfo
	// * @return
	// * @throws AppBizException
	// */
	// public int addPropFeeOffsetInfo( String commID,String apartmentID,String
	// orderID,Date payTime,List<String> detailIDs)
	// throws AppBizException;

	/**
	 * 用途 修改propFeeOffsetInfo（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:18:55
	 * @param propFeeOffsetInfo
	 * @return
	 * @throws AppBizException
	 */

	public int editPropFeeOffsetInfo(PropFeeOffsetInfoDto propFeeOffsetInfo)
			throws AppBizException;

	/**
	 * 用途 单个查询 （橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:18:55
	 * @param propFeeOffsetInfoID
	 * @return
	 * @throws AppBizException
	 */

	public PropFeeOffsetInfoDto findPropFeeOffsetInfoByID(
			String propFeeOffsetInfoID) throws AppBizException;

	/**
	 * 用途 单个查询 （橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:18:55
	 * @param propFeeOffsetInfoID
	 * @return
	 * @throws AppBizException
	 */

	public PropFeeOffsetInfoDto findMorePropFeeOffsetInfoByID(
			String propFeeOffsetInfoID) throws AppBizException;

	/**
	 * 用途 逻辑删除（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:18:55
	 * @param propFeeOffsetInfoID
	 * @return
	 * @throws AppBizException
	 */
	public int deletePropFeeOffsetInfoByLogic(String propFeeOffsetInfoID)
			throws AppBizException;

	/**
	 * 用途 查询列表 （橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:18:55
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizExceptionception
	 */
	public List<Map<String, Object>> findPropFeeOffsetInfoByPage(String commID,
			String searchType, String startTime, String endTime,
			String tsCreate, String search, int pageNo, int pageSize)
			throws AppBizException;

	/**
	 * 用途 查询列表（返回对对象）（橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:18:55
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizException
	 */
	public List<PropFeeOffsetInfoDto> getPropFeeOffsetInfoByPage(
			String tsCreate, String search, int pageNo, int pageSize)
			throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeOffsetInfo（橙子生活）(返回Map<String, Object>)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:18:55
	 * @param offsetID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param apartmentID
	 *            (非必填字段)
	 * 
	 * @param feeDetailID
	 *            (非必填字段)
	 * 
	 * @param feeTypeID
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> selectPropFeeOffsetInfoByRelevantID(
			String offsetID, String commID, String apartmentID,
			String feeDetailID, String feeTypeID) throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeOffsetInfo（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:18:55
	 * @param offsetID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param apartmentID
	 *            (非必填字段)
	 * 
	 * @param feeDetailID
	 *            (非必填字段)
	 * 
	 * @param feeTypeID
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeOffsetInfoDto> findPropFeeOffsetInfoByRelevantID(
			String offsetID, String commID, String apartmentID,
			String feeDetailID, String feeTypeID, String offsetType,
			int pageNo, int pageSize) throws AppBizException;

	public List<Map<String, Object>> selectOffsetInfoForApp(String status,
			String offsetID, String commID, String apartmentID,
			String feeDetailID, String feeTypeID, String offsetTypes,
			int pageNo, int pageSize) throws AppBizException;

	/**
	 * 用途 批量查询propFeeOffsetInfo（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:18:55
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeOffsetInfoDto> bauthfindPropFeeOffsetInfo(
			List<String> propFeeOffsetInfoIDs) throws AppBizException;

	/**
	 * 用途 批量查询propFeeOffsetInfo（橙子生活）(返回Map)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:18:55
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> bauthfindPropFeeOffsetInfoByMap(
			Map<String, Object> propFeeOffsetInfo) throws AppBizException;

	/**
	 * 用途 清除
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:18:55
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public void clearCache() throws AppBizException;

	/***
	 * 根据月份查询详情
	 * 
	 * @param propFeeOffsetInfo
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> getOffDetail(
			Map<String, Object> propFeeOffsetInfo) throws AppBizException;

	/***
	 * 获取时间
	 * 
	 * @param propFeeOffsetInfo
	 * @return
	 * @throws AppBizException
	 */
	public Map<String, Object> getOffTime(Map<String, Object> propFeeOffsetInfo)
			throws AppBizException;

	/***
	 * 查询全部缴费的月份
	 * 
	 * @param apartmentID
	 * @return
	 * @throws AppBizException
	 */
	public List<String> getOffFeeDate(String apartmentID)
			throws AppBizException;

	public List<Map<String, Object>> bauthSearchPropFeeDetails(
			Map<String, Object> propFeeDetail) throws AppBizException;

	/***
	 * 同步冲抵信息到到财务中心
	 * 
	 * @param parMap
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> synchpreBillOffData(
			Map<String, Object> parMap) throws AppBizException;

	/**
	 * 用途 批量查询propFeeOffsetInfo（橙子生活）(返回Map)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:18:55
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> getOffsetInfoByMap(
			Map<String, Object> params) throws AppBizException;

	public List<Map<String, Object>> getOffsetInfo(String orderID, String status)
			throws AppBizException;

	public List<Map<String, Object>> getOffsetInfos(String orderID,
			String status) throws AppBizException;

	/***
	 * 
	 * @param propFeeOffsetInfo
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> bauthfindPropFeeOffset(
			Map<String, Object> propFeeOffsetInfo) throws AppBizException;

	public List<Map<String, Object>> findOffCount(
			Map<String, Object> propFeeOffsetInfo) throws AppBizException;

	public List<Map<String, Object>> findRectCount(
			Map<String, Object> propFeeOffsetInfo) throws AppBizException;

}